/*
 ********************************************************************************** 
  Classe da Unidade Lógica a aritmética
 **********************************************************************************
 */

import java.util.BitSet;

public class alu {
  private int zero;
  private int op1;
  private int op2;
  private int resultado;
  
  alu(){
      zero = 0;
      op1 = 0;
      op2 = 0;
      resultado = 0;
  }
  
  
  public void opera(int op1, int op2,String controleAlu){
      switch(controleAlu){
          case "0010":{
              resultado =  op1 + op2;
              break;
          }
          case "0110":{
              resultado = op1 - op2;
              zero = 0;
              if (resultado == 0){
                zero = 1;  
              }
              break;
         }
         case "0000":{
             resultado = op1 & op2;
             break;
         }
         case "0001":{
             resultado = op1 | op2;
             break;
         }
         case "0111":{
             resultado = 0;
             if (op1 < op2){
                resultado = 1;
             }
             break;
         }
         case "1111":{
           resultado = op1*op2;
           break;
         }
         case "1110":{
           resultado = op1/op2;
           break;
         }
         case "0011":{
           String op = Integer.toBinaryString(op1);
           int tamanho = op.length();
           for(int i=32-tamanho;i>0;i--){
             op = "0"+op;
           }
           for(int i=op2; i>0; i--){
            op = op.substring(1,op.length());
            op = op + "0";
           } 
           resultado = Integer.parseInt(op,2);
         }
      }
  }

  public int getResultado() {
    return resultado;
  }

  public int getZero() {
    return zero;
  }
  
  public int somador(int op1, int op2){
    return op1 + op2;
  }

  
  
  
}
